MENTAL, UNA
GRAMÁTICA
SINTÁCTICO-
SEMÁNTICA

“El hombre que habla con imágenes primordiales habla con mil lenguas” (Jung)

“El estudio de la gramática, en mi opinión, es capaz de arrojar mucha más luz sobre cuestiones filosóficas que las comunmente supuestas por los filósofos” (Bertrand Russell)



Gramática Sintáctica

Una gramática sintáctica o formal −también llamada “gramática generativa”− es un metalenguaje que especifica o describe la sintaxis (la forma) de las diferentes sentencias de un lenguaje. En el caso de un lenguaje de programación, la gramática describe la estructura de los elementos pasivos (datos) y a los activos (procesos), lo que constituye una unificación metalingüística de estos dos tipos de elementos en el aspecto sintáctico.

Una gramática formal consta de 4 elementos:
  1. Un conjunto T de elementos terminales.

  2. Un conjunto N de elementos no terminales.

  3. Un conjunto P de producciones (o reglas de producción) del tipo α ::= β. La parte izquierda α es un elemento no terminal. El símbolo “::=” significa “se define como”. La parte derecha β es una secuencia de elementos terminales y no terminales. La longitud de la secuencia es el número de elementos de que consta. Existe la secuencia vacía, que tiene longitud cero.

  4. Un elemento no terminal S designado como elemento no terminal inicial.
El lenguaje asociado a una gramática es el conjunto de secuencias finitas generado por dicha gramática a partir del elemento no terminal inicial. De ahí el nombre de “gramática generativa”.

Dos gramáticas son equivalentes si generan o describen el mismo lenguaje. El lenguaje generado por una gramática puede ser finito o infinito.


La notación BNF

Inventada por John Backus [1959], inicialmente se llamó “Backus Normal Form” (Forma Normal de Backus). Esta notación se adoptó para describir el lenguaje de programación Algol 60. La aportación de Peter Naur [1963] en la edición del informe sobre Algol 60 hizo que la notación BNF se conociera como "Backus Naur Form" [Knuth, 1964].

En la notación original BNF sólo se contemplaban dos mecanismos de estructuración de la información:
  1. Composición.
    Corresponde a la secuencia de elementos (terminales o no). No se utiliza ningún símbolo específico.

  2. Alternativa.
    Representa una elección entre diferentes secuencias. Se expresa mediante el símbolo “|”.
Esta notación era claramente insuficiente y apareció la EBNF (Extended BNF, BNF extendida), de la que existen muchas variantes. El objetivo era reducir el número de reglas de producción y aumentar la legibilidad. La más difundida contempla adicionalmente los mecanismos:
  1. Agrupación de alternativas.
    Se expresa mediante paréntesis.

  2. Repetición
    De un elemento cero o más veces (*) o una o más veces (+).

  3. Opcional
    Indica que puede o no aparecer. Se expresa mediante corchetes: [ ].
Ejemplos:
Limitaciones de la notación EBNF
La naturaleza genérica de la notación EBNF

La notación EBNF es realmente un meta-metalenguaje, es decir, es un lenguaje para definir metalenguajes de lenguajes concretos.

EBNF, como lenguaje en sí, es un lenguaje de alto nivel, en el que varios autores han creído ver un poderoso formalismo, de naturaleza genérica, que puede, por si mismo, usarse como lenguaje de programación, como lenguaje de especificación formal, como fundamento de una ciencia o teoría de los lenguajes de programación y de la propia programación [Harrison, 1965] [Gries, 1981] [Schmidt, 1982].


Gramática Semántica

Así como en las gramáticas sintácticas tradicionales se manejan categorías abstractas (que tienen normalmente relación con la propia estructura del lenguaje), las gramáticas semánticas están estructuradas y organizadas en base a categorías lexicales, es decir, en conceptos, categorías o propiedades semánticas concretas relativas a un dominio, como por ejemplo, tiempo, lugar, color, objetos, etc.

Las características principales de las gramáticas semánticas son: De todas formas, la frontera entre los dos tipos de gramáticas (sintácticas y semánticas) es un tanto difusa. Por ejemplo, las gramáticas formales de los lenguajes de programación se pueden considerar también semánticas, pues además de un análisis sintáctico, se genera una estructura que relaciona las entidades o categorías contempladas por el lenguaje.


MENTAL como Gramática Sintáctico-Semántica

MENTAL permite expresar la notación EBNF, por lo que tiene, al menos, su mismo poder expresivo. Por lo tanto, sirve para definir gramáticas sintácticas.

MecanismoEBNFMENTAL
Definición::==: (sustitución potencial)
Composición de x, y, z, …xyz...(x y z …)
Alternativa entre x, y, z, …x|y|z|...∈{x y z …} (pertenencia a un conjunto)
Repetición de x 0 o más vecesx*x★[0…]
Repetición de x 1 o más vecesx+x★[1…]
Secuencia vacíano existe símboloθ (expresión nula)
x opcional[x]∈{x θ}

MENTAL es una gramática semántica universal, pues permite relacionar, sin restriccines, conceptos presentes en todos los dominios.

Desde el punto de vista de MENTAL, una gramática formal G es una expresión extensiva o intensiva que describe todas las sentencias de un lenguaje. Lenguaje y gramática se confunden. En el caso de un lenguaje infinito, la expresión que describe el lenguaje es recursiva.


Ejemplos
  1. Tenemos un robot que se mueve en una sola dirección: hacia adelante (a) o hacia atrás (b). Un viaje V del robot es una secuencia de movimientos que finalizan en el punto de partida. En medio del viaje puede iniciarse otro viaje.

    El lenguaje se define mediante la siguiente expresión recursiva:


    Una forma más simple es:


    en donde θ es el viaje nulo, es decir, sin desplazamiento.

    Ejemplos de viajes: aabb, baba, abab, ababaabb, etc.

    Todo viaje tiene una longitud (la longitud de la secuencia). El viaje mínimo tiene longitud 2.

  2. Un viaje en las cuatro direcciones.
    Es una generalización del ejemplo anterior. Las 4 direcciones son: arriba (a), abajo (b), izquierda (i) y derecha (d).

    El lenguaje se define mediante la siguiente expresión recursiva:


    Ejemplos de viajes: aidb, aaabbb, aiiidddb, iiaabbdd, etc.

    También podríamos haber utilizado otra notación que reflejara los caminos opuestos:


  3. Números binarios.
    El lenguaje se expresa también de forma recursiva:


    Ejemplos de números binarios: 0, 1, 01, 10, 11, 011, 111000, etc.

    Todo número binario tiene una longitud (la longitud de la secuencia de dígitos). El número binario mínimo tiene longitud 1.

    En los tres ejemplos los lenguajes son infinitos.

Lenguaje parametrizado

La definición de un lenguaje puede parametrizarse. En el ejemplo de los números binarios, podemos considerar, por ejemplo:
Ventajas de MENTAL como gramática
MENTAL como lenguaje y metalenguaje

MENTAL es un lenguaje y un metalenguaje:

Adenda

Orígen de las gramáticas formales

El concepto de gramática proviene del campo de la lingüística. El concepto de gramática formal tiene su origen en la lingüística moderna, cuyo máximo representante es Noam Chomsky [1956], que desarrolló un lenguaje simbólico de tipo descriptivo que permitía explicar el ilimitado poder expresivo de los lenguajes naturales al basarse en mecanismos recursivos.

En informática, la idea de gramática formal adquirió una gran importancia para la definición de lenguajes de programación y de todo tipo de lenguajes en general.


Clasificación de las gramáticas y los lenguajes

Las gramáticas se clasifican en: La jerarquía de gramáticas se manifiesta en lo siguiente: Los lenguajes de tipo n son los lenguajes generados por una gramática de tipo n.


Bibliografía